package com.cn.gpt;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class HelloInvocationHandler implements InvocationHandler {
    // 目标对象，可以是具体的业务实现，也可以为空（根据需求）
    private Object target;

    /**
     * 需要被代理的对象
     * @param target
     */
    public HelloInvocationHandler(Object target) {
        this.target = target;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println(proxy.getClass());
        // 方法调用前处理
        System.out.println("调用方法 " + method.getName() + " 之前的逻辑");
        Object result = null;
        if (target != null) {
            // 调用真实对象的方法
            result = method.invoke(target, args);
        } else {
            // 如果不需要调用真实对象，也可以直接返回结果或做其他操作
        }
        // 方法调用后处理
        System.out.println("调用方法 " + method.getName() + " 之后的逻辑");
        return result;
    }
}
